# -*- coding: utf-8 -*-

from django.db import models
from django.dispatch.dispatcher import receiver
from django.db.models.signals import pre_save

class Categoria(models.Model):
    nome_categoria = models.CharField(u'categoria do Produto', max_length=50, unique=True)
    descricao = models.TextField('Descrição', blank=True, null=True)
    quantidade_vendida = models.DecimalField('Quantidade Vendida', max_digits=10, decimal_places=3, default = 0)
    
    def save(self, *args, **kwargs):
        self.nome_categoria = self.nome_categoria.replace(' ', '_')
        self.nome_categoria = self.nome_categoria.replace('-', '_')
        
        super(Categoria, self).save(*args, **kwargs)
    
    def __unicode__(self):
        return self.nome_categoria

class Setor(models.Model):
    """
    Define onde é despachado o produto
    notificar = 0; Não precisa gerar notificação
    notificar = 1;
    """
    class Meta:
        verbose_name_plural = "Setores"
        
    nome_setor = models.CharField(u'Nome do Setor', max_length=50, unique=True)
    notificar = models.IntegerField(default = 0, choices = ((1, 'Sim'), (0, 'Não')))
    destino = models.ForeignKey('impressao.Impressora', null = True, blank = True, default = None)
    
    def __unicode__(self):
        return self.nome_setor

class Produto(models.Model):
    class Meta:
        permissions = (
            ('view_produtos', 'Pode visualizar produtos'),
            ('preparar_metade', 'Pode preparar metade'),
        )
        
    descricao = models.CharField(u'Descrição',max_length=50)
    descricao_impressao = models.CharField(u'Descrição para impressão', max_length=30)
    preco_de_compra = models.DecimalField(u'Preço de Compra',blank=True, null=True, max_digits=15, decimal_places=2, default = None)
    valor_adicional = models.DecimalField(u'Valor Adicional',blank=True, null=True, max_digits=15, decimal_places=2, default = None)
    preco_de_venda = models.DecimalField(u'Preço de Venda', max_digits=10, decimal_places=2)
    codigo_fiscal = models.CharField(u'Código Fiscal', max_length=50, blank = True, null = True, default = None)
    quantidade = models.DecimalField('Quantidade em Estoque', max_digits=10, decimal_places=3, default=1000000)
    minimo = models.DecimalField('Quantidade mínima', max_digits=10, decimal_places=3, default = 0)
    unidade = models.CharField(u'Unidade', max_length=3, choices=(('Un', 'Unitário'),), default='Un')
    observacao = models.TextField('Observação', blank=True, null=True, default = '')
    imagem = models.ImageField(null=True, blank=True, upload_to='galeria', default = '')
    categoria = models.ForeignKey(Categoria)
    setor = models.ForeignKey(Setor)
    aviso = models.BooleanField(default = False)
    codigo = models.CharField(u'Código', max_length=50, unique=True)
    quantidade_vendida = models.DecimalField('Quantidade Vendida', max_digits=10, decimal_places=3, default = 0)
    # elemento = models.ManyToManyField(Pedido, through='Item')
    
    def save(self, *args, **kwargs):
        if self.quantidade <= self.minimo:
            self.aviso = True
        else:
            self.aviso = False
        
        super(Produto, self).save(*args, **kwargs)
    
    def __unicode__(self):
        return self.descricao
